﻿using System;
using System.Diagnostics;
using Microsoft.AspNetCore.Mvc.Filters;

namespace WebAPI.Filters
{
    //动作过滤器
    public class Action : ActionFilterAttribute
    {

        private Stopwatch timer;

        // /// <summary>
        // /// Action调用之前运行
        // /// </summary>
        // /// <param name="filterContext"></param>
        // public override void OnActionExecuting(ActionExecutingContext filterContext)
        // {
        //     if (string.Equals(filterContext.HttpContext.Request.HttpMethod, "get", StringComparison.CurrentCultureIgnoreCase))
        //     {
        //         filterContext.Result = new HttpNotFoundResult("只允许POST请求！");
        //     }
        //
        //     var response = filterContext.RequestContext.HttpContext.Response;
        //
        //     var request = filterContext.RequestContext.HttpContext.Request;
        //
        //
        //     //response.StatusCode = (int)HttpStatusCode.NotFound;
        //     //filterContext.Result = new EmptyResult();
        //     //return;
        //
        //     // 获取域名
        //     var domainName = filterContext.HttpContext.Request.Url.Authority;
        //
        //     //获取模块名称
        //     //var module = filterContext.HttpContext.Request.Url.Segments[1].Replace('/', ' ').Trim();
        //
        //     //获取 controllerName 名称
        //     var controllerName = filterContext.RouteData.Values["controller"].ToString();
        //
        //     //获取ACTION 名称
        //     var actionName = filterContext.RouteData.Values["action"].ToString();
        //
        //     //
        //     string controller = filterContext.RequestContext.RouteData.Values["controller"].ToString();
        //     string action = filterContext.RequestContext.RouteData.Values["action"].ToString();
        //
        //     timer = Stopwatch.StartNew();
        // }

        // /// <summary>
        // /// Action调用之后运行
        // /// </summary>
        // /// <param name="filterContext"></param>
        // public override void OnActionExecuted(ActionExecutedContext filterContext)
        // {
        //     timer.Stop();
        //     filterContext.HttpContext.Response.Write($"<div>方法执行时间：{timer.Elapsed.TotalSeconds:F6}s</div>");
        // }

        // 结果过滤器 OnResultExecuting  OnResultExecuted


    }
}